package com.qdlc.p2p.biz.service;

import java.util.List;

import com.qdlc.p2p.dal.common.model.jpa.PageDataList;
import com.qdlc.p2p.dal.dto.User;
import com.qdlc.p2p.dal.dto.UserCache;
import com.qdlc.p2p.dal.dto.UserIdentify;
import com.qdlc.p2p.dal.dto.UserUpload;
import com.qdlc.p2p.dal.model.UserCacheModel;
import com.qdlc.p2p.dal.model.UserModel;

/**
 * @author sj
 * @version 2.0
 * @since 2014年2月18日15:14:10
 */
public interface UserCacheService {

	/**
	 * 我的基本信息
	 * 
	 * @param userId
	 * @return
	 */
	public UserCacheModel getUserCache(long userId);

	/**
	 * 获取用户附属信息
	 * 
	 * @param userId
	 * @return
	 */
	public UserCache findByUserId(long userId);

	/**
	 * 实名认证
	 * 
	 * @param user
	 * @param model
	 */
	public Object doRealname(User user, UserModel model) throws Exception;

	/**
	 * 实名认证更新证件号码
	 * 
	 * @param userId real_name
	 * @return
	 */
	public void modify(long userId, String card_id);

	/**
	 * 实名认证更新证件号码 证件号码正反面
	 * 
	 * @param userId real_name
	 * @return
	 */
	public void modify(long userId, String card_id, String card_positive, String card_opposite);
	/**
	 * 重载实名认证更新证件号码 证件号码正反面
	 * 
	 * @param userId real_name
	 * @return 
	 * @return
	 */
	void modify(long userId, UserModel model, String card_positive, String card_opposite);
	
	/**
	 * 申请vip
	 * 
	 * @param user
	 */
	public UserIdentify applyVip(User user);

	public void update(UserCache userCache);
	
	public void update(UserCache userCache, List<UserUpload> list, long[] delIds);

	public void updateStatus();

	/**
	 * 保存UserCache对象
	 * @param model UserCache对象
	 * @param list 实物照集合
	 */
	void save(UserCache model, List<UserUpload> list);
	
	/**
	 * 保存UserCache对象
	 * @param pageNumber 第几页
	 * @param pageSize 每页个数
	 * @param model UserCache对象
	 * @return PageDataList<UserCacheModel>
	 */
	PageDataList<UserCacheModel> userList(int pageNumber, int pageSize, UserCache model);

	/**
	 * 获取UserCache对象
	 * @param id id
	 * @return UserCache 
	 */
	UserCache findById(long id);
	
	void updateAvaPic(User u,String path);
	
	/**
	 *  第三方实名认证
	 * @param model
	 * @param user
	 * @return
	 */
	Object tppRealName(UserModel model,User user);
	
	

}
